#   使用jieba对“三国演义”中的词频进行统计并输出
import jieba

#   1.打开并清洗文本
def getText():
    txt = open("三国.txt", "r", encoding="utf-8").read()
    words = jieba.lcut(txt)
    counts = {}
    for word in words:
        if len(word) == 1:
            continue
        elif word == "诸葛亮" or word == "孔明曰":
            rword = "孔明"
        elif word == "关公" or word == "云长":
            rword = "关羽"
        elif word == "玄德" or word == "玄德曰":
            rword = "刘备"
        elif word == "孟德" or word == "丞相":
            rword = "曹操"
        else:
            rword = word
        counts[rword] = counts.get(rword, 0) + 1
    return counts

#   2.对词频进行统计并打印
def Statistics(counts):
    items = list(counts.items())
    items.sort(key=lambda x: x[1], reverse=True)
    #   取出排序前20的单词
    for i in range(10):
        word, count = items[i]
        print("{0:<10}{1:>5}".format(word, count))

if __name__ == '__main__':
    counts = getText()
    Statistics(counts)